import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class Darstellung extends JFrame
{
    private Container fensterInneres;
    private JButton startbtn, restartbtn, pausebtn;
    private JPanel nav, navtxt;
    private PTPanel malbereich;  
    private Simulation simulation;
    private Raster grid;
    private JLabel schimmelanz, bakteriumanz;
    private DoubleEingabe bacwachs, schimmwachs;
    private GanzzahlEingabe bacanz, schimmanz;

    public Darstellung(Raster r)
    {
        super("Simulation einer Populationsentwicklung");
        grid = r;

        fensterInneres = getContentPane();
        fensterInneres.setLayout(new BorderLayout());

        malbereich = new PTPanel(grid);
        malbereich.setPreferredSize(new Dimension(800, 600));
        MouseListener pListener = new MouseAdapter()
            {
                public void mouseClicked(ActionEvent evt)
                {
                    System.out.println(
                        //gibPosition(evt.getSource())
                    );
                }
            };

        fensterInneres.add(malbereich, BorderLayout.CENTER);

        nav = new JPanel();
        nav.setLayout( new BorderLayout() ); 
        startbtn = new JButton("Start");
        restartbtn = new JButton("Zufallskonstellation");
        pausebtn = new JButton("Stop");
        startbtn.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent evt)
                {
                    startbtn_ActionPerformed(evt);
                }
            });
        pausebtn.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent evt)
                {
                    pausebtn_ActionPerformed(evt);
                }
            });
        restartbtn.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent evt)
                {
                    restartbtn_ActionPerformed(evt);
                }
            });

        navtxt = new JPanel();
        JPanel navbtns = new JPanel();
        navbtns.add(startbtn);
        navbtns.add(restartbtn);
        navbtns.add(pausebtn);

        JPanel einstellfelder = new JPanel();
        
        bacwachs = new DoubleEingabe("Bakterienwachstum", 0.5);
        einstellfelder.add(bacwachs);
        schimmwachs = new DoubleEingabe("Schimmelwachstum", 0.3);
        einstellfelder.add(schimmwachs);
        bacanz = new GanzzahlEingabe("Bakterienanzahl", 5);
        einstellfelder.add(bacanz);
        schimmanz = new GanzzahlEingabe("Schimmelanzahl", 1);
        einstellfelder.add(schimmanz);



        schimmelanz = new JLabel("Schimmelpilze: 0");
        bakteriumanz = new JLabel("Bakterien: 0");
        navtxt.add(bakteriumanz);
        navtxt.add(schimmelanz);
        nav.add(navbtns, BorderLayout.EAST);
        nav.add(navtxt, BorderLayout.WEST);
        nav.add(einstellfelder, BorderLayout.CENTER);
        fensterInneres.add(nav, BorderLayout.SOUTH);

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setResizable(false);
        setVisible(true);
    }

    public void paint(Graphics g)
    {
        super.paint(g);
    }

    public void setzeSimulation(Simulation s)
    {
        simulation = s;
    }

    public void startbtn_ActionPerformed(ActionEvent evt)
    {
        simulation.start(bacwachs.getValue(), schimmwachs.getValue(), bacanz.getValue(), schimmanz.getValue());
    }

    public void pausebtn_ActionPerformed(ActionEvent evt)
    {
        simulation.pausiere();
    }

    public void restartbtn_ActionPerformed(ActionEvent evt)
    {
        simulation.restart();
        simulation.start(bacwachs.getValue(), schimmwachs.getValue(), bacanz.getValue(), schimmanz.getValue());
    }
    
    public double getBacwachs()
    {
        return bacwachs.getValue();
    }
    
        public double getSchimmwachs()
    {
        return schimmwachs.getValue();
    }
    
        public int getBacanz()
    {
        return bacanz.getValue();
    }
    
        public int getSchimmanz()
    {
        return schimmanz.getValue();
    }

    public PTPanel getPTPanel()
    {
        return malbereich;
    }

    public void setSchimmelAnz(int a)
    {
        schimmelanz.setText("Schimmelpilze: "+a); navtxt.repaint();
    }

    public void setBakterienAnz(int a)
    {
        bakteriumanz.setText("Bakterien: "+a); navtxt.repaint();
    }
}
